package com.funymmz.demo.service.impl;

import com.funymmz.demo.dao.UserRepository;
import com.funymmz.demo.domain.User;
import com.funymmz.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserImplService implements UserService {

    @Autowired
    UserRepository userRepository;

    /**
     * 获取所有用户信息
     * @return 所有用户
     */
    public List<User> findAll() {return userRepository.findAll();}

    /**
     * 分页查询
     * @param pageable pageable
     * @return 用户列表
     */
    public Page<User> findAll(Pageable pageable){ return userRepository.findAll(pageable);}

    /**
     * 分页，带过滤的查询
     * @param userExample userExample
     * @param pageable pageable
     * @return Page<User>
     */
    public Page<User> findAll(Example<User> userExample, Pageable pageable) {
        return userRepository.findAll(userExample, pageable);
    }

    /**
     * 插入用户信息
     * @param user 用户实体
     * @return 插入新用户
     */
    public User insert(User user) {return userRepository.save(user);}

    /**
     * 更新用户信息
     * @param user 用户实体
     * @return 更新用户信息
     */
    public User update(User user) {return userRepository.save(user);}

    /**
     * 删除用户信息
     * @param user 用户实体
     */
    public void delete(User user) {userRepository.delete(user);}

    /**
     * 通过id删除用户
     * @param id 用户id
     */
    public void delete(Long id) {
        User user = new User();
        user.setId(id);
        userRepository.delete(user);
    }

    /**
     * 通过id获取用户
     * @param id 用户id
     * @return id对应的用户
     */
    public User getById(Long id){
        return userRepository.findById(id).orElse(null);
    }

    /**
     * 通过用户名查询用户
     * @param username 用户名
     * @return 对应的用户
     */
    public List<User> findByUsername(String username) {
        return userRepository.findByUsername(username);
    }

    /**
     * 匹配用户名和密码
     * @param username 用户名
     * @param password 密码
     * @return 匹配到的用户
     */
    public List<User> findByUsernameAndPassword(String username, String password){
        return userRepository.findByUsernameAndPassword(username, password);
    }
}
